package com.ctms.system.service;

import com.ctms.system.domain.CommitTaskDO;
import com.ctms.system.domain.CourseDO;
import com.ctms.system.domain.ShipinDO;
import com.ctms.system.domain.TaskReleaseDO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface TaskReleaseService {

    //查询所有任务
    List<TaskReleaseDO> selectAllTask(Map<String,Object> param);
    int count(Map<String,Object> param);

    //增加任务
    int insertTask(TaskReleaseDO taskReleaseDO);

    //获取这个登录老师的课程
    List<CourseDO> getAllCourse(Integer userId);
    //通过class的id获取名称
    String getCourseNameById(Integer cid);
    //通过tid获取任务信息
    TaskReleaseDO selectTaskByTid(Integer tid);
    //修改任务
    int updateTask(TaskReleaseDO taskReleaseDO);
    //删除任务
    int deleteTask(Integer tid);
    //上传文件时获取任务id再修改其文件名
    int selectMaxTid();
    int updateFileName(TaskReleaseDO taskReleaseDO);
    //通过文件名查找对应文件
    ShipinDO selectFileByName(String name);
    //学生待完成作业展示
    List<TaskReleaseDO> selectAllToDoTask(Map<String,Object> param);
    int toDoCount(Map<String,Object> param);
    //学生提交作业
    int commitTask(CommitTaskDO commitTaskDO);
    //查找提交作业时最大的id再修改其文件名
    int selectMaxCommit();
    CommitTaskDO selectCommitFileById(Integer id);
    int updateCommitFile(CommitTaskDO commitTaskDO);
    //判断是否是第一次提交作业
    int commitCount(@Param("tid")Integer tid,@Param("userId")Integer userId);
    //不是第一次提交更新提交内容及时间
    int updateCommit(CommitTaskDO commitTaskDO);
    CommitTaskDO selectByTidUserId(@Param("tid")Integer tid,@Param("userId")Integer userId);
    //通过登陆人查询已提交作业
    List<CommitTaskDO> selectCommitByUserId(Integer userId);

    //查询所有学生提交的作业
    List<TaskReleaseDO> selectAllCommitTask(Map<String,Object> param);
    int studentCommitCount(Map<String,Object> param);
    //查询已提交作业人数
    int totalCommit(Integer tid);
    //根据tid查询作业提交情况
    List<CommitTaskDO> selectCommitByTid(Integer tid);
    //通过课程名查询该课程所有的任务
    List<TaskReleaseDO> selectAllTaskByCourseName(String courseName);
}
